home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Programming / AmigaTalk / general / Number.st < prev    next >
Text File  |  2000-02-27  |  2KB  |  105 lines

  1. "-------------------------------------------------------------"
  2. " Abstract Class Number                                       "
  3. "-------------------------------------------------------------"
  4.  
  5. Class Number :Magnitude
  6. [
  7.    maxtype: aNumber
  8.       ^ <primitive 9 self aNumber> 
  9.          ifTrue:  [self]
  10.          ifFalse: [aNumber coerce: self ]
  11. |
  12.    = aNumber
  13.       ^ (self maxtype: aNumber) = (aNumber maxtype: self)
  14. |
  15.    < aNumber
  16.       ^ (self maxtype: aNumber) < (aNumber maxtype: self)
  17. |
  18.    > aNumber
  19.       ^ (self maxtype: aNumber) > (aNumber maxtype: self)
  20. |
  21.    + aNumber
  22.       ^ (self maxtype: aNumber) + (aNumber maxtype: self)
  23. |
  24.    - aNumber
  25.       ^ (self maxtype: aNumber) - (aNumber maxtype: self)
  26. |
  27.    * aNumber
  28.       ^ (self maxtype: aNumber) * (aNumber maxtype: self)
  29. |
  30.    / aNumber
  31.       ^ (self maxtype: aNumber) / (aNumber maxtype: self)
  32. |
  33.    ^ aNumber   " The ^ is also the expotentiation operator!"
  34.       ^ self asFloat ^ aNumber asFloat
  35. |
  36.    @ aNumber
  37.       ^ ( Point new x: self ) y: aNumber
  38. |
  39.    abs
  40.       ^ (self < 0)
  41.         ifTrue:  [ 0 - self ]
  42.         ifFalse: [ self ]
  43. |
  44.    exp
  45.       ^ self asFloat exp
  46. |
  47.    gamma
  48.       ^ self asFloat gamma
  49. |
  50.    ln
  51.       ^ self asFloat ln
  52. |
  53.    log: aNumber
  54.       ^ self ln / aNumber ln
  55. |
  56.    negated
  57.       ^ 0 - self
  58. |
  59.    negative
  60.       ^ self < 0
  61. |
  62.    pi
  63.       ^ self * 3.1415926
  64. |
  65.    positive
  66.       ^ self >= 0
  67. |
  68.    radians
  69.       ^ Radian new: self asFloat
  70. |
  71.    raisedTo: aNumber
  72.       ^ self asFloat ^ aNumber asFloat
  73. |
  74.    reciprocal
  75.       ^ 1.00 / self
  76. |
  77.    roundTo: aNumber
  78.       ^ (self / aNumber) rounded * aNumber
  79. |
  80.    sign
  81.       ^ (self < 0)
  82.          ifTrue: [ -1 ]
  83.          ifFalse: [ (self > 0)
  84.                     ifTrue:  [ 1 ]
  85.                     ifFalse: [ 0 ] ]
  86. |
  87.    sqrt
  88.       ^ self asFloat sqrt
  89. |
  90.    squared
  91.       ^ self * self
  92. |
  93.    strictlyPositive
  94.       ^ self > 0
  95. |
  96.    to: highValue
  97.       ^ Interval new ; from: self to: highValue by: 1
  98. |
  99.    to: highValue by: stepSize
  100.       ^ Interval new ; from: self to: highValue by: stepSize
  101. |
  102.    truncateTo: aNumber
  103.       ^ (self / aNumber) truncated * aNumber
  104. ]
  105.